#!/bin/bash

# 定义两个远程仓库地址
REMOTE1_NAME="git-code"
REMOTE1_URL="git@gitcode.com:coder-x/cursor-linux-diy.git"
REMOTE2_NAME="origin"
REMOTE2_URL="git@gitee.com:czyt/cursor-linux-diy.git"

# 默认分支名
DEFAULT_BRANCH="master"

# 颜色输出函数
echo_green() {
    echo -e "\033[32m$1\033[0m"
}
echo_red() {
    echo -e "\033[31m$1\033[0m"
}
echo_yellow() {
    echo -e "\033[33m$1\033[0m"
}

# 检查当前目录是否是一个 Git 仓库
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
    echo_red "错误：当前目录不是一个 Git 仓库！请在 Git 项目目录中运行此脚本。"
    exit 1
fi

# 检查是否有未提交的更改
if ! git diff-index --quiet HEAD --; then
    echo_yellow "警告：存在未提交的更改，正在自动提交..."
    git add .
    git commit -m "Auto commit before pushing to remotes"
    if [ $? -ne 0 ]; then
        echo_red "错误：自动提交失败，请手动提交更改后重试。"
        exit 1
    fi
fi

# 检查当前分支是否为默认分支（master），如果不是则切换到 master
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$CURRENT_BRANCH" != "$DEFAULT_BRANCH" ]; then
    echo_yellow "当前分支不是 $DEFAULT_BRANCH，正在切换到 $DEFAULT_BRANCH..."
    if ! git checkout "$DEFAULT_BRANCH" 2>/dev/null; then
        echo_red "错误：切换到 $DEFAULT_BRANCH 分支失败，可能是分支不存在！"
        exit 1
    fi
fi

# 检查并添加第一个远程仓库
if ! git remote show "$REMOTE1_NAME" > /dev/null 2>&1; then
    echo_yellow "远程仓库 $REMOTE1_NAME 不存在，正在添加..."
    git remote add "$REMOTE1_NAME" "$REMOTE1_URL"
    if [ $? -ne 0 ]; then
        echo_red "错误：添加远程仓库 $REMOTE1_NAME 失败！"
        exit 1
    fi
else
    echo_green "远程仓库 $REMOTE1_NAME 已存在，检查 URL 是否匹配..."
    current_url=$(git remote get-url "$REMOTE1_NAME")
    if [ "$current_url" != "$REMOTE1_URL" ]; then
        echo_yellow "远程仓库 $REMOTE1_NAME 的 URL 不匹配，正在更新..."
        git remote set-url "$REMOTE1_NAME" "$REMOTE1_URL"
    fi
fi

# 检查并添加第二个远程仓库
if ! git remote show "$REMOTE2_NAME" > /dev/null 2>&1; then
    echo_yellow "远程仓库 $REMOTE2_NAME 不存在，正在添加..."
    git remote add "$REMOTE2_NAME" "$REMOTE2_URL"
    if [ $? -ne 0 ]; then
        echo_red "错误：添加远程仓库 $REMOTE2_NAME 失败！"
        exit 1
    fi
else
    echo_green "远程仓库 $REMOTE2_NAME 已存在，检查 URL 是否匹配..."
    current_url=$(git remote get-url "$REMOTE2_NAME")
    if [ "$current_url" != "$REMOTE2_URL" ]; then
        echo_yellow "远程仓库 $REMOTE2_NAME 的 URL 不匹配，正在更新..."
        git remote set-url "$REMOTE2_NAME" "$REMOTE2_URL"
    fi
fi

# 推送代码到两个远程仓库（默认分支为 master）
echo_green "正在推送代码到 $REMOTE1_NAME ($REMOTE1_URL) 的 $DEFAULT_BRANCH 分支..."
git push "$REMOTE1_NAME" "$DEFAULT_BRANCH"
if [ $? -ne 0 ]; then
    echo_red "错误：推送代码到 $REMOTE1_NAME 的 $DEFAULT_BRANCH 分支失败！尝试强制推送..."
    git push --force "$REMOTE1_NAME" "$DEFAULT_BRANCH"
    if [ $? -ne 0 ]; then
        echo_red "错误：强制推送仍然失败！请检查权限或网络问题。"
        exit 1
    fi
fi

echo_green "正在推送代码到 $REMOTE2_NAME ($REMOTE2_URL) 的 $DEFAULT_BRANCH 分支..."
git push "$REMOTE2_NAME" "$DEFAULT_BRANCH"
if [ $? -ne 0 ]; then
    echo_red "错误：推送代码到 $REMOTE2_NAME 的 $DEFAULT_BRANCH 分支失败！尝试强制推送..."
    git push --force "$REMOTE2_NAME" "$DEFAULT_BRANCH"
    if [ $? -ne 0 ]; then
        echo_red "错误：强制推送仍然失败！请检查权限或网络问题。"
        exit 1
    fi
fi

echo_green "成功推送代码到两个远程仓库的 $DEFAULT_BRANCH 分支！"
